package com.qding.park.manager.facade.queue.service;

import com.qding.park.common.core.exceptions.BaseException;
import com.qding.park.common.core.exceptions.business.manager.service.ServiceCoreException;
import com.qding.park.manager.facade.queue.service.entity.ExceptionParkOutSyncDTO;
import com.qding.park.manager.facade.queue.service.entity.ParkEventSyncDTO;
import com.qding.park.manager.facade.queue.service.entity.ParkInSyncDTO;
import com.qding.park.manager.facade.queue.service.entity.ParkOutRenewalSyncDTO;
import com.qding.park.manager.facade.queue.service.entity.ParkOutSyncDTO;
import com.qding.park.manager.facade.queue.service.entity.RenewalSyncDTO;
import com.qding.park.manager.pojo.ap.ApAppearanceRecord;
import com.qding.park.manager.pojo.ap.ApApproachRecord;
import com.qding.park.manager.pojo.ap.ApCarLockAlarm;
import com.qding.park.manager.pojo.ap.ApMonthlyFeeInfo;
import com.qding.park.manager.pojo.ap.ApReservationInReminder;
import com.qding.park.manager.pojo.ap.ApVisitingReminder;

/**
 * @ClassName ReportFacade
 * @Description TODO(上报)
 * @author LeiYang
 * @Date 2017年4月17日 下午3:58:39
 * @version 1.0.0
 */
public interface ReportFacade {

    void Park_MonthlyFeeSync(ApMonthlyFeeInfo apMonthlyFeeInfo) throws BaseException;

    /**
     * @Title: park_EventAlert_ParkingApply @Description: TODO(来访提醒推送 业务) @param @param apVisitingReminder
     * 来访提醒信息 @return void 返回类型 @throws
     */
    void park_EventAlert_ParkingApply(ApVisitingReminder apVisitingReminder) throws BaseException;

    /**
     * @Title: Park_EventAlert_ParkingAreaPrep @Description: TODO(预定车辆入场 推送) @param @param apReservationInReminder
     * 预定入场通知 @return void 返回类型 @throws
     */

    /**
     * @Title: Park_ParkInSync @Description: TODO(车辆进场信息推送) @param @param apApproachRecord 入场记录 @return void
     * 返回类型 @throws
     */
    void Park_ParkInSync(ApApproachRecord apApproachRecord);

    /**
     * @Title: Park_ParkOutSync @Description: TODO(车辆出场信息推送) @param @param apAppearanceRecord 出场记录 @return void
     * 返回类型 @throws
     */
    void Park_ParkOutSync(ApAppearanceRecord apAppearanceRecord) throws ServiceCoreException;
    
    
    void  alarmCockCar(ApCarLockAlarm apCarLockAlarm) throws BaseException ;
    
    void inviteVisited(ApVisitingReminder apVisitingReminder)throws BaseException;
    
    void carInCheck(ApReservationInReminder apReservationInReminder)throws BaseException;
    
    /***********v1.0 方舟上报******************************/
    
    /**
     * @Description (TODO异常出场上报)
     * @param dto
     * @throws BaseException
     */
    void exceptionParkOutSync(ExceptionParkOutSyncDTO dto)throws BaseException;
    
    /**
     * @Description (TODO车场事件推送)
     * @param dto
     * @throws BaseException
     */
    void parkEventSync(ParkEventSyncDTO dto)throws BaseException;
    
    /**
     * @Description (TODO车辆入场推送)
     * @param dto
     * @throws BaseException
     */
    void parkInSync(ParkInSyncDTO dto)throws BaseException;
    
    /**
     * @Description (TODO出/入场缴费记录)
     * @param dto
     * @throws BaseException
     */
    void  parkOutRenewalSync(ParkOutRenewalSyncDTO dto)throws BaseException;
    
    /**
     * @Description (TODO出场记录上报)
     * @param dto
     * @throws BaseException
     */
    void parkOutSync(ParkOutSyncDTO dto)throws BaseException;
    
    /**
     * @Description (TODO充值/固定续费同步)
     * @param dto
     * @throws BaseException
     */
    void renewalSync(RenewalSyncDTO dto)throws BaseException;
    
}
